/*
 * @Author: bastuu
 * @Date: 2022-02-05 03:56:12
 * @Last Modified by: bastuu
 * @Last Modified time: 2022-02-06 04:39:47
 * 说明：登陆流程
 * 1. 收集表单数据
 * 2. 前端验证
 *      1. 验证用户信息（账号、密码、）是否合法
 *      2. 前端验证不通过 提示用户，不需要发请求
 *      3. 前端验证通过，发请求（携带信息）
 * 3. 后端验证
 *      1. 验证用户是否存在
 *      2. 不存在直接返回
 *      3. 存在，验证秘法是否正确
 *      4. 密码不正确返回给前端提示
 *      5. 密码正确返回给前端数据，提示用户登陆成功（携带用户信息）
 */
import request from '../../Utils/request';
Page({
	/**
	 * 页面的初始数据
	 */
	data: {
		phone: '', // 手机号
		password: '', // 密码
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (options) {},

	// 表单项内容发生改变时的回调
	handleInput(event) {
		// let type = event.currentTarget.id;  // id传值
		let type = event.currentTarget.dataset.type; // data- 传值
		this.setData({
			[type]: event.detail.value,
		});
	},
	// 登陆的回调
	async login() {
		// 1. 收集表单数据
		let { phone, password } = this.data;
		// 2. 前端验证
		/**
		 * 手机号验证
		 *  1. 内容为空
		 *  2. 格式不正确
		 *  3. 格式正确，验证通过
		 */
		if (!phone.trim()) {
			wx.showToast({
				title: '手机号不能为空',
				icon: 'none',
			});
			return;
		}
		// 定义正则
		let phoneReg = /^1[3-9]\d{9}$/;
		if (!phoneReg.test(phone)) {
			wx.showToast({
				title: '手机号码格式不正确',
				icon: 'none',
			});
			return;
		}

		if (!password.trim()) {
			wx.showToast({
				title: '密码不能为空',
				icon: 'none',
			});
			return;
		}

		// 后端验证
		let result = await request('/login/cellphone', { phone, password, isLogin: true });
		if (result.code === 200) {
			//登陆成功
			wx.showToast({
				title: '登陆成功',
			});
			// 将用户信息存储至本地
			wx.setStorageSync('userInfo', JSON.stringify(result.profile));
			// 跳转至 个人中心
			wx.reLaunch({
				url: '/pages/personal/personal',
			});
		} else if (result.code === 400) {
			wx.showToast({
				title: '手机号码错误',
				icon: 'none',
			});
		} else if (result.code === 502) {
			wx.showToast({
				title: '密码错误',
				icon: 'none',
			});
		} else {
			wx.showToast({
				title: '登陆失败，请重新登陆',
				icon: 'none',
			});
		}
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function () {},
});
